/**
 * The MIT License (MIT)
 * Copyright (c) 2021 铭软科技(mingsoft.net)
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:

 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */


package net.mingsoft.basic.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.mingsoft.base.dao.IBaseDao;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.basic.action.q.ManagerListQuery;
import net.mingsoft.basic.action.r.ManagerResponse;
import net.mingsoft.basic.entity.ManagerEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.io.Serializable;
import java.util.List;

/**
 * 管理员持久化
 * @author ms dev group
 * @version 
 * 版本号：100-000-000<br/>
 * 创建日期：2012-03-15<br/>
 * 历史修订：<br/>
 */
public interface IManagerDao extends IBaseDao<ManagerEntity> {

	
	/**
	 * 根据用户名修改用户密码
	 * @param manager 管理员实体
	 */
	public void updateUserPasswordByUserName(ManagerEntity manager);	
	
	
	/**
	 * 查询当前登录的管理员的所有子管理员
	 * @return 返回管理员集合
	 */
	public List<ManagerEntity> queryAllChildManager(int managerId);

	/**
	 * 通过ID查询管理员
	 * @param id 管理员ID
	 * @return 管理员实体
	 */
	ManagerEntity selectById(Integer id);


	ManagerResponse getOne(String account);

	List<ManagerEntity> selectByIds(List<Long> id);

	List<ManagerEntity> selectByManagerNickname(@Param("managerNickname")String managerNickname,@Param("offset") Integer offset,@Param("count") Integer count);

	int selectByManagerNicknameCount(@Param("managerNickname") String managerNickname);

	List<ManagerEntity> selectManagers(@Param("query") ManagerListQuery query,
									   @Param("offset") Integer offset,
									   @Param("count")Integer count);

	@Select("select id,\n" +
			"       role_id as roleId,\n" +
			"       people_id as peopleId,\n" +
			"       manager_admin as managerAdmin,\n" +
			"       manager_name as managerName,\n" +
			"       manager_nickname as managerNickname,\n" +
			"       manager_password as managerPassword,\n" +
			"       UPDATE_BY as updateBy,\n" +
			"       UPDATE_DATE as updateDate,\n" +
			"       CREATE_BY as createBy,\n" +
			"       CREATE_DATE as createDate,\n" +
			"       DEL as del,\n" +
			"       status\n" +
			"from manager")
	List<ManagerEntity> selectAllManagers();

	int selectManagersCount(ManagerListQuery query);

	int updateOne(ManagerEntity entity);

	int insertOne(ManagerEntity entity);

}
